/** 对象生成器 */
export class QueryModelBuilder {
  constructor(obj) {
    if (!Array.isArray(obj)) throw new Error('传入对象不是数据')
    if (obj.length === 0) throw new Error('传入了空对象')
    if (!(obj[0] instanceof QueryModelItem)) throw new Error('传入对象类型错误')

    this.obj = obj
  }

  /** 生成对象 */
  build() {
    const o = {}
    for (const item of this.obj) {
      o[item.name] = item.defalutValue
    }

    o.configs = this.obj

    // 重置字段值
    o.reset = function() {
      for (const config of this.configs) {
        this[config.name] = config.defalutValue
      }
    }

    return o
  }
}

export class QueryModelItem {
  constructor(name, defalutValue = null) {
    this.name = name
    this.defalutValue = defalutValue
  }
}
